package hu.gbalage.dml.contentassist.antlr.internal; 

import java.io.InputStream;
import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.xtext.parsetree.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.ui.common.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
import hu.gbalage.dml.services.DMLGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

public class InternalDMLParser extends AbstractInternalContentAssistParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_STRING", "RULE_ID", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'document'", "'{'", "'}'"
    };
    public static final int RULE_ID=5;
    public static final int RULE_STRING=4;
    public static final int RULE_ANY_OTHER=10;
    public static final int RULE_INT=6;
    public static final int RULE_WS=9;
    public static final int RULE_SL_COMMENT=8;
    public static final int EOF=-1;
    public static final int RULE_ML_COMMENT=7;

        public InternalDMLParser(TokenStream input) {
            super(input);
        }
        

    public String[] getTokenNames() { return tokenNames; }
    public String getGrammarFileName() { return "../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g"; }


     
     	private DMLGrammarAccess grammarAccess;
     	
        public void setGrammarAccess(DMLGrammarAccess grammarAccess) {
        	this.grammarAccess = grammarAccess;
        }
        
        @Override
        protected Grammar getGrammar() {
        	return grammarAccess.getGrammar();
        }
        
        @Override
        protected String getValueForTokenName(String tokenName) {
        	return tokenName;
        }




    // $ANTLR start entryRuleDocument
    // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:60:1: entryRuleDocument : ruleDocument EOF ;
    public final void entryRuleDocument() throws RecognitionException {
        try {
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:60:19: ( ruleDocument EOF )
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:61:1: ruleDocument EOF
            {
             before(grammarAccess.getDocumentRule()); 
            pushFollow(FOLLOW_ruleDocument_in_entryRuleDocument60);
            ruleDocument();
            _fsp--;

             after(grammarAccess.getDocumentRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleDocument67); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end entryRuleDocument


    // $ANTLR start ruleDocument
    // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:68:1: ruleDocument : ( ( rule__Document__Group__0 ) ) ;
    public final void ruleDocument() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:72:2: ( ( ( rule__Document__Group__0 ) ) )
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:73:1: ( ( rule__Document__Group__0 ) )
            {
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:73:1: ( ( rule__Document__Group__0 ) )
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:74:1: ( rule__Document__Group__0 )
            {
             before(grammarAccess.getDocumentAccess().getGroup()); 
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:75:1: ( rule__Document__Group__0 )
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:75:2: rule__Document__Group__0
            {
            pushFollow(FOLLOW_rule__Document__Group__0_in_ruleDocument94);
            rule__Document__Group__0();
            _fsp--;


            }

             after(grammarAccess.getDocumentAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end ruleDocument


    // $ANTLR start entryRuleElement
    // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:87:1: entryRuleElement : ruleElement EOF ;
    public final void entryRuleElement() throws RecognitionException {
        try {
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:87:18: ( ruleElement EOF )
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:88:1: ruleElement EOF
            {
             before(grammarAccess.getElementRule()); 
            pushFollow(FOLLOW_ruleElement_in_entryRuleElement120);
            ruleElement();
            _fsp--;

             after(grammarAccess.getElementRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleElement127); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end entryRuleElement


    // $ANTLR start ruleElement
    // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:95:1: ruleElement : ( ruleChunk ) ;
    public final void ruleElement() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:99:2: ( ( ruleChunk ) )
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:100:1: ( ruleChunk )
            {
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:100:1: ( ruleChunk )
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:101:1: ruleChunk
            {
             before(grammarAccess.getElementAccess().getChunkParserRuleCall()); 
            pushFollow(FOLLOW_ruleChunk_in_ruleElement154);
            ruleChunk();
            _fsp--;

             after(grammarAccess.getElementAccess().getChunkParserRuleCall()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end ruleElement


    // $ANTLR start entryRuleChunk
    // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:114:1: entryRuleChunk : ruleChunk EOF ;
    public final void entryRuleChunk() throws RecognitionException {
        try {
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:114:16: ( ruleChunk EOF )
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:115:1: ruleChunk EOF
            {
             before(grammarAccess.getChunkRule()); 
            pushFollow(FOLLOW_ruleChunk_in_entryRuleChunk179);
            ruleChunk();
            _fsp--;

             after(grammarAccess.getChunkRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleChunk186); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end entryRuleChunk


    // $ANTLR start ruleChunk
    // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:122:1: ruleChunk : ( ( rule__Chunk__TextAssignment ) ) ;
    public final void ruleChunk() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:126:2: ( ( ( rule__Chunk__TextAssignment ) ) )
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:127:1: ( ( rule__Chunk__TextAssignment ) )
            {
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:127:1: ( ( rule__Chunk__TextAssignment ) )
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:128:1: ( rule__Chunk__TextAssignment )
            {
             before(grammarAccess.getChunkAccess().getTextAssignment()); 
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:129:1: ( rule__Chunk__TextAssignment )
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:129:2: rule__Chunk__TextAssignment
            {
            pushFollow(FOLLOW_rule__Chunk__TextAssignment_in_ruleChunk213);
            rule__Chunk__TextAssignment();
            _fsp--;


            }

             after(grammarAccess.getChunkAccess().getTextAssignment()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end ruleChunk


    // $ANTLR start rule__Document__Group__0
    // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:143:1: rule__Document__Group__0 : ( 'document' ) rule__Document__Group__1 ;
    public final void rule__Document__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:147:1: ( ( 'document' ) rule__Document__Group__1 )
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:148:1: ( 'document' ) rule__Document__Group__1
            {
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:148:1: ( 'document' )
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:149:1: 'document'
            {
             before(grammarAccess.getDocumentAccess().getDocumentKeyword_0()); 
            match(input,11,FOLLOW_11_in_rule__Document__Group__0252); 
             after(grammarAccess.getDocumentAccess().getDocumentKeyword_0()); 

            }

            pushFollow(FOLLOW_rule__Document__Group__1_in_rule__Document__Group__0262);
            rule__Document__Group__1();
            _fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end rule__Document__Group__0


    // $ANTLR start rule__Document__Group__1
    // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:163:1: rule__Document__Group__1 : ( '{' ) rule__Document__Group__2 ;
    public final void rule__Document__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:167:1: ( ( '{' ) rule__Document__Group__2 )
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:168:1: ( '{' ) rule__Document__Group__2
            {
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:168:1: ( '{' )
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:169:1: '{'
            {
             before(grammarAccess.getDocumentAccess().getLeftCurlyBracketKeyword_1()); 
            match(input,12,FOLLOW_12_in_rule__Document__Group__1291); 
             after(grammarAccess.getDocumentAccess().getLeftCurlyBracketKeyword_1()); 

            }

            pushFollow(FOLLOW_rule__Document__Group__2_in_rule__Document__Group__1301);
            rule__Document__Group__2();
            _fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end rule__Document__Group__1


    // $ANTLR start rule__Document__Group__2
    // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:183:1: rule__Document__Group__2 : ( ( rule__Document__ElementsAssignment_2 ) ) rule__Document__Group__3 ;
    public final void rule__Document__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:187:1: ( ( ( rule__Document__ElementsAssignment_2 ) ) rule__Document__Group__3 )
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:188:1: ( ( rule__Document__ElementsAssignment_2 ) ) rule__Document__Group__3
            {
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:188:1: ( ( rule__Document__ElementsAssignment_2 ) )
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:189:1: ( rule__Document__ElementsAssignment_2 )
            {
             before(grammarAccess.getDocumentAccess().getElementsAssignment_2()); 
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:190:1: ( rule__Document__ElementsAssignment_2 )
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:190:2: rule__Document__ElementsAssignment_2
            {
            pushFollow(FOLLOW_rule__Document__ElementsAssignment_2_in_rule__Document__Group__2329);
            rule__Document__ElementsAssignment_2();
            _fsp--;


            }

             after(grammarAccess.getDocumentAccess().getElementsAssignment_2()); 

            }

            pushFollow(FOLLOW_rule__Document__Group__3_in_rule__Document__Group__2338);
            rule__Document__Group__3();
            _fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end rule__Document__Group__2


    // $ANTLR start rule__Document__Group__3
    // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:201:1: rule__Document__Group__3 : ( '}' ) ;
    public final void rule__Document__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:205:1: ( ( '}' ) )
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:206:1: ( '}' )
            {
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:206:1: ( '}' )
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:207:1: '}'
            {
             before(grammarAccess.getDocumentAccess().getRightCurlyBracketKeyword_3()); 
            match(input,13,FOLLOW_13_in_rule__Document__Group__3367); 
             after(grammarAccess.getDocumentAccess().getRightCurlyBracketKeyword_3()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end rule__Document__Group__3


    // $ANTLR start rule__Document__ElementsAssignment_2
    // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:228:1: rule__Document__ElementsAssignment_2 : ( ruleElement ) ;
    public final void rule__Document__ElementsAssignment_2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:232:1: ( ( ruleElement ) )
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:233:1: ( ruleElement )
            {
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:233:1: ( ruleElement )
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:234:1: ruleElement
            {
             before(grammarAccess.getDocumentAccess().getElementsElementParserRuleCall_2_0()); 
            pushFollow(FOLLOW_ruleElement_in_rule__Document__ElementsAssignment_2410);
            ruleElement();
            _fsp--;

             after(grammarAccess.getDocumentAccess().getElementsElementParserRuleCall_2_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end rule__Document__ElementsAssignment_2


    // $ANTLR start rule__Chunk__TextAssignment
    // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:243:1: rule__Chunk__TextAssignment : ( RULE_STRING ) ;
    public final void rule__Chunk__TextAssignment() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:247:1: ( ( RULE_STRING ) )
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:248:1: ( RULE_STRING )
            {
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:248:1: ( RULE_STRING )
            // ../hu.gbalage.dml.language.ui/src-gen/hu/gbalage/dml/contentassist/antlr/internal/InternalDML.g:249:1: RULE_STRING
            {
             before(grammarAccess.getChunkAccess().getTextSTRINGTerminalRuleCall_0()); 
            match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rule__Chunk__TextAssignment441); 
             after(grammarAccess.getChunkAccess().getTextSTRINGTerminalRuleCall_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end rule__Chunk__TextAssignment


 

    public static final BitSet FOLLOW_ruleDocument_in_entryRuleDocument60 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDocument67 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Document__Group__0_in_ruleDocument94 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleElement_in_entryRuleElement120 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleElement127 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleChunk_in_ruleElement154 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleChunk_in_entryRuleChunk179 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleChunk186 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Chunk__TextAssignment_in_ruleChunk213 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_11_in_rule__Document__Group__0252 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_rule__Document__Group__1_in_rule__Document__Group__0262 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_12_in_rule__Document__Group__1291 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_rule__Document__Group__2_in_rule__Document__Group__1301 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Document__ElementsAssignment_2_in_rule__Document__Group__2329 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_rule__Document__Group__3_in_rule__Document__Group__2338 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_13_in_rule__Document__Group__3367 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleElement_in_rule__Document__ElementsAssignment_2410 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_STRING_in_rule__Chunk__TextAssignment441 = new BitSet(new long[]{0x0000000000000002L});

}